import {h} from 'vue';
import { ElMessageBox,ElMessage } from 'element-plus'
export function openDialog(options) {
    debugger
    //1.解构参数
    const { component,props:getPropsFunc=()=>{},title='数据详情',otherOptions={} } = options
    //2.打开弹框
    ElMessageBox({
        customStyle:{//默认样式
            width:'60%',
            maxWidth:'100%',
        },
        title: title,
        message: () =>{
            return h(component, getPropsFunc(ElMessageBox.close))
        },
        showConfirmButton:false,//不显示确定按钮
        ...otherOptions
    })
}

export function deepClone(source) {
    if (!source) {
        return source
    }
    // .constructor指向该对象的构造函数
    const targetObj = source.constructor === Array ? [] : {};
    // 遍历对象或数组
    for (let key in source) {
        // obj.hasOwnProperty() 指示对象自身属性中是否具有指定的属性
        if (source.hasOwnProperty(key)) {
            // 判断自身属性是否存在，且是否为对象,是对象进一步遍历，非对象直接赋值，不存在属性不执行
            if (source[key] && typeof (source[key]) === 'object') {
                // 维护层代码 进一步判断source[key] 运行代码可去除
                targetObj[key] = source[key].constructor === Array ? [] : {}
                // 递归
                targetObj[key] = deepClone(source[key])
            } else {
                // source[key]不是对象时直接赋值
                targetObj[key] = source[key]
            }
        }
    }
    return targetObj
}
export const MessageSuccess = (text = '操作成功') => {
    return ElMessage.success({
        message: text
    });
}

export const MessageError = (text = '操作失败') => {
    return ElMessage.error({
        message: text
    });;
}
export const MessageInfo = (text = '操作信息') => {
    return ElMessage.info({
        message: text
    });;
}
export const MessageBox = (text = '是否继续?', title = '提示', type = 'warning') => {
    return ElMessageBox.confirm(text, title, {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: type
    });
}